import { defineStore } from 'pinia'

export const useUserStore = defineStore('user', {
  state: () => ({
    // 用户基本信息
    username: '',
    userId: '',
    sign: '',
    
    // JWT token
    token: '',
    
    // 登录状态
    isLogin: false,
    
    // 完整用户信息
    userInfo: null
  }),
  
  actions: {
    // 设置用户信息
    setUserInfo(userInfo) {
      this.username = userInfo.username || ''
      this.userId = userInfo.userId || ''
      this.userInfo = userInfo
      console.log('[Store] 设置用户信息:', this.username)
    },
    
    // 设置token
    setToken(token) {
      this.token = token
      console.log('[Store] 设置Token')
    },
    
    // 设置sign
    setSign(sign) {
      this.sign = sign
    },
    
    // 设置登录状态
    setIsLogin(status) {
      this.isLogin = status
      console.log('[Store] 登录状态:', status)
    },
    
    // 保存登录信息（一次性设置所有）
    saveAuthInfo(data) {
      this.setToken(data.token)
      this.setSign(data.sign || '')
      this.setUserInfo(data.userInfo)
      this.setIsLogin(true)
      console.log('[Store] 保存登录信息成功')
    },
    
    // 清除登录信息
    clearAuthInfo() {
      this.username = ''
      this.userId = ''
      this.sign = ''
      this.token = ''
      this.isLogin = false
      this.userInfo = null
      console.log('[Store] 清除登录信息')
    },
    
    // 登出
    logout() {
      this.clearAuthInfo()
      console.log('[Store] 用户已登出')
    }
  },
  
  // 开启持久化
  persist: {
    enabled: true,
    strategies: [
      {
        key: 'user',
        storage: localStorage,
        paths: ['username', 'userId', 'sign', 'token', 'isLogin', 'userInfo']
      }
    ]
  }
})

